001 /**
002 * Created by IntelliJ IDEA.
003 * User: Wei Wang
004 * Date: Apr 25, 2003
005 * Time: 12:37:08 AM
006 */
007
008 package EVolve.util.phasedetectors;
009
010 import EVolve.visualization.XYViz.XYVisualization;
011 import EVolve.visualization.AxesPanel;
012 import EVolve.Scene;
013 import EVolve.util.HelperFuncs;
014 import javax.swing.*;
015 import java.awt.*;
016
017 public class PhaseOperation {
018 private PhaseClipboard phaseClipboard;
019
020 public PhaseOperation() {
021 phaseClipboard = new PhaseClipboard();
022 }
023
024 public void add() {
025 XYVisualization workingViz = HelperFuncs.getActiveXYViz();
026
027 if (workingViz == null) return;
028
029 Scene.getUIManager().enablePhaseDetectorButton(false);
030
031 workingViz.freeze(true);
032 AxesPanel canvas = (AxesPanel)((JScrollPane)workingViz.getPanel()).getViewport().getView();
033 canvas.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
034 new PhaseAddRemover().beginAdd();
035 }
036
037 public void remove() {
038 XYVisualization workingViz = HelperFuncs.getActiveXYViz();
039
040 if (workingViz == null) return;
041
042 Scene.getUIManager().enablePhaseDetectorButton(false);
043
044 workingViz.freeze(true);
045 AxesPanel canvas = (AxesPanel)((JScrollPane)workingViz.getPanel()).getViewport().getView();
046 canvas.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
047 new PhaseAddRemover().beginRemove();
048 }
049
050 public void copyPhase() {
051 phaseClipboard.copyPhase();
052 }
053
054 public void pastePhase() {
055 phaseClipboard.pastePhase();
056 }
057
058 public boolean clipboardIsEmpty() {
059 return phaseClipboard.isEmpty();
060 }
061
062 public void triggerPhases(int noiseTolerance) {
063 XYVisualization visual = HelperFuncs.getActiveXYViz();
064
065 if ((visual == null)&&(visual.getPhaseDetector() == null)) {
066 Scene.showErrorMessage("No phase detector available.");
067 return;
068 }
069
070 visual.getPhaseDetector().triggerPhases(noiseTolerance);
071 }
072
073 public void undo() {
074 XYVisualization visual = HelperFuncs.getActiveXYViz();
075
076 if ((visual == null)||(visual.getPhaseDetector() == null)) {
077 Scene.showErrorMessage("No undoable actions available.");
078 return;
079 }
080
081 visual.getPhaseDetector().undo();
082 }
083
084 public boolean undoable() {
085 XYVisualization visual = HelperFuncs.getActiveXYViz();
086
087 if ((visual == null)||(visual.getPhaseDetector() == null)) {
088 return false;
089 }
090
091 return visual.getPhaseDetector().undoable();
092 }
093 }